package com.situ.view;

import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;

import com.situ.bean.StudentBean;
import com.situ.dao.StuDao;

public class StudentView{
    StuDao sDao = new StuDao();
    
    // 主界面，返回功能选项
    public void menu() throws SQLException {
        boolean flag = true;
        char key = '0';
        while (flag) {
            System.out.println("****************学生档案管理系统****************");
            System.out.println("\t1.查看所有学生\t\t2.添加新生\n" +
                               "\t3.按姓名查找\t\t4.按专业查找\n\t0.退出系统" + 
                                                "\t\t请选择输入(0-4):");
            // 功能跳转1.查看所有学生 2.添加新生 3.按姓名查看学生 4.按专业查找学生 0.退出系统
            key = TSUtility.readMenuSelection();
            switch (key) {
            case '1':
                getAllStudents();
                break;
            case '2':
                addStudent();
                break;
            case '3':
                findStudentByName();
                break;
            case '4':
                findStudentByMajor();
                break;
            case '0':
                flag = false;
                break;
            default:
                break;
            }
        }
    }

    // 打印所有学生信息
    public void getAllStudents() throws SQLException {
        System.out.println("****************学生档案信息表*****************");
        System.out.println("| ID | 姓名 | 年龄 | 性别 | 专业号 | 专业");
        for (StudentBean s : sDao.getAllStu()) {
            System.out.println(s);
        }
        System.out.println();
    }

    // 添加新生
    public void addStudent() throws SQLException {
        Scanner scanner = new Scanner(System.in);
        StudentBean st = new StudentBean();
        // 获取新生信息
        System.out.println("*****************添加新生档案*****************");
        System.out.println();
        System.out.println("请输入新生姓名(String):");
        st.setStuName(scanner.nextLine());
        System.out.println("请输入新生年龄(int):");
        st.setAge(scanner.nextInt());
        System.out.println("请输入新生性别(男1，女0 int):");
        st.setSex(scanner.nextInt());
        System.out.println("请输入新生专业ID(int):");
        st.setMajorId(scanner.nextInt());
        scanner.nextLine();
        System.out.println("请输入新生专业(String):");
        st.setMajorName(scanner.nextLine());
        if (sDao.insertStu(st) > 0) {
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }

    }

    // 通过姓名查找学生，并打印该学生信息
    public void findStudentByName() throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("*****************通过姓名查找学生*****************");
        System.out.println("请输入姓名：");
        String name = "";
        boolean flag = false;
        name = scanner.nextLine();
        StudentBean st = sDao.getStuByName(name);
        if (st.getStuId() != null) {
            System.out.println("| ID | 姓名 | 年龄 | 性别 | 专业号 | 专业");
            System.out.println(st + "\n");
            flag = true;
        }
        // 未查到
        if (!flag) {
            System.out.println("没有姓名为" + name + "同学的信息\n");
        }
    }

    // 查找某一专业的学生
    public void findStudentByMajor() throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("*****************通过专业查找学生*****************");
        System.out.println("请输入专业号：");
        Integer majorId = new Integer(0);
        boolean flag = false;
        if (scanner.hasNextInt()) {            
            majorId = scanner.nextInt();
        }
        System.out.println("| ID | 姓名 | 年龄 | 性别 | 专业号 | 专业");
        for (StudentBean student : sDao.getStuByMajorId(majorId)) {
            System.out.println(student + "\n");
            flag = true;
        }
        // 未查到
        if (!flag) {
            System.out.println("没有专业为" + majorId + "同学的信息\n");
        }
    }

}
